<template>
  <view class="address-container">
    <view
      class="address-item"
      v-for="(address, index) in addressList"
      :key="index"
      @click="selectAddress(address)"
    >
      <view class="address-info">
        <text class="name">{{ address.name }}</text>
        <text class="phone">{{ address.phone }}</text>
      </view>
      <text class="address-detailed">
        {{ address.city }} {{ address.department }} {{ address.houseNumber }}
      </text>
      <image class="edit-icon" src="/static/edit-icon.png" mode="aspectFit"></image>
    </view>
    <button class="create-address-btn" @click="goToCreateAddressPage">新建收货地址</button>
  </view>
</template>

<script>
import config from "@/config.js";
export default {
  data() {
    return {
      addressList: [],
      isSelectMode: false // 新增标志位，判断是否是从订单页面进入选择地址
    };
  },
  onLoad(options) {
    // 判断是否是从订单页面进入
    this.isSelectMode = options.from === 'order';
    this.fetchAddressList();
  },
  onShow() {
    // 在页面显示时重新获取地址列表
    this.fetchAddressList();
  },
  methods: {
    async fetchAddressList() {
      try {
        const res = await uni.request({
          // 使用配置文件中的 api_host 拼接请求 URL
          url: `${config.api_host}/data`
        });
        if (res.statusCode === 200) {
          if (Array.isArray(res.data)) {
            this.addressList = res.data;
          } else {
            console.error('后端返回的数据不是数组类型');
          }
        } else {
          console.error('获取地址列表失败, 状态码:', res.statusCode);
        }
      } catch (error) {
        console.error('请求出错', error);
      }
    },
    selectAddress(address) {
      if (this.isSelectMode) {
        // 从订单页面进入选择模式，返回选中的地址
        const pages = getCurrentPages();
        const prevPage = pages[pages.length - 2]; // 上一个页面

        // 通过$vm设置上一个页面的数据
        if (prevPage && prevPage.$vm) {
          prevPage.$vm.selectedAddress = address;
          uni.navigateBack();
        }
      } else {
        // 正常模式，可以编辑地址等
        console.log('选中地址:', address);
        // 这里可以添加编辑地址的逻辑
      }
    },
    goToCreateAddressPage() {
      uni.navigateTo({
        url: '/pages/add/address' // 请根据实际路由调整
      });
    }
  }
};
</script>

<style scoped>
.address-container {
  padding: 15px;
  background-color: #f5f5f5;
  min-height: 100vh;
}

.address-item {
  background-color: #fff;
  border-radius: 8px;
  padding: 15px;
  margin-bottom: 15px;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05);
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.address-info {
  display: flex;
  align-items: center;
}

.name {
  font-size: 16px;
  margin-right: 10px;
}

.phone {
  font-size: 14px;
  color: #666;
}

.address-detailed {
  font-size: 14px;
  flex: 1;
  margin-left: 10px;
}

.edit-icon {
  width: 20px;
  height: 20px;
}

.create-address-btn {
  background-color: #007AFF;
  color: white;
  border: none;
  height: 48px;
  border-radius: 6px;
  font-size: 16px;
  width: 100%;
}
</style>    